import {nodeOps} from './runtime-dom.js'
export function render(vnode,container){
//  1 初次渲染  2 dom diff
  patch(null,vnode,container)
}
// n1 旧虚拟节点
// n2 新虚拟节点
function patch(n1,n2, container) { //后续diff时可以执行这个方法
  // 组件的虚拟节点 tag是一个对象
  // 如果是组件的话 tag 可能是一个对象
  if(typeof n2.tag ==='string'){
    // 标签渲染
    mountElement(n2,container);
  } else if(typeof n2.tag ==='object') {
    // 组件渲染
  }
}
function mountElement(vnode,container){
  const {tag,children,props} = vnode;
  // 将虚拟节点 和 真实节点 创建映射关系
  const el = (vnode.el = nodeOps.createElement(tag));
  if(Array.isArray(children)){ //是对象的 先不写  
    mountChildren(children,el);
  } else {
    // debugger
    nodeOps.hostSetElementText(el,children);
  }
  nodeOps.insert(el,container);
}
function mountChildren(children,container) {
  for(let i =0;i<children.length; i++) {
    let child = children[i];
    patch(null,child,container);//递归挂载孩子节点
  }
}